package com.example.concurrency.thread01_template_method1;

/**
 * @description: 模板方法类
 * @program: demos
 * @author: dove
 * @date: 2020-12-02 23:33
 * 此类由来：研究线程实现的模板方法模式
 **/

public abstract class Cook {
    abstract void oil(); // 食用油
    abstract void egg(); // 鸡蛋
    abstract void tomato(); // 西红柿

    /**
     * 封装具体的行为：做饭
     * 为什么要声明为final呢？是因为我们需要定义一个模板，但是不希望模板方法被重写。
     */
    public final void cook(){
        oil();
        egg();
        tomato();
    }
}
